/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.seguridad.managed;

import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.rrhh.bean.Empleado;
import sv.com.intesal.seguridad.bean.Modulo;
import sv.com.intesal.seguridad.bean.Roles;
import sv.com.intesal.seguridad.controlador.ModuloControlador;
import sv.com.intesal.seguridad.controlador.RolesControlador;

/**
 *
 * @author JM
 */
@ManagedBean(name = "rolesManaged")
@ViewScoped
public class RolesManaged implements Serializable {

    private Mensaje m;
    private Empleado selectedEmpleado;
    private Roles selectedRoles;
    private Roles selectedRol;
    private List<Modulo> modulos;
    private List<Roles> roles;

    public RolesManaged() {
        selectedRoles = new Roles();
        selectedRol = new Roles();
        selectedEmpleado = new Empleado();
        m = new Mensaje();
        roles = null;
        this.llenarModulo();
    }

    private void llenar_roles() {
        try {
            RolesControlador rc = new RolesControlador();
//
            if (this.getSelectedEmpleado().getId_u() != null) {
                this.setRoles(rc.getRoles(this.getSelectedEmpleado().getId_u()));
            }
        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }
    }

    public void selectAllChanges(Roles r) {
        try {
            RolesControlador rc = new RolesControlador();
            rc.updateRol(r);

        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }

    }

    public void getEmpleado_Quick(Empleado em) {
        try {
            this.selectedEmpleado = em;
            this.llenar_roles();
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    private void llenarModulo() {
        try {
            if (this.getModulos() == null) {
                ModuloControlador mc = new ModuloControlador();
                this.setModulos(mc.fillComboBox());
            }
        } catch (Exception ex) {
            m.messageError(m.getIerror());
            ex.printStackTrace();
        }
    }

    private Boolean validar() throws Exception {

        try {
            if (this.selectedEmpleado.getId_u() == null) {
                m.messageError("DEBE ELEGIR UN EMPLEADO PARA PODER MODIFICAR");
                return false;
            }
            if (this.selectedRol.getCodigo_m() == null) {
                m.messageError("NO EXISTE MODULO");
                return false;
            }
            return true;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public void completeTransaccion() {

        try {
            if (this.validar() == true) {

                this.selectedRol.setId_u(this.selectedEmpleado.getId_u());

                RolesControlador rc = new RolesControlador();
                rc.updateRoles_Especiales(this.selectedRol);

                this.llenar_roles();
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void setUsuarios_x_Formulario_Roles() {

        try {
            RolesControlador rc = new RolesControlador();
            rc.setRoles_x_Formularios_y_Usuarios();
        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }
    }
    /*SETTERS AND GETTERS*/

    public Roles getSelectedRol() {
        if (selectedRol == null) {
            selectedRol = new Roles();
        }
        return selectedRol;
    }

    public void setSelectedRol(Roles selectedRol) {
        this.selectedRol = selectedRol;
    }

    public Empleado getSelectedEmpleado() {
        if (selectedEmpleado == null) {
            selectedEmpleado = new Empleado();
        }
        return selectedEmpleado;
    }

    public void setSelectedEmpleado(Empleado selectedEmpleado) {
        this.selectedEmpleado = selectedEmpleado;
    }

    public List<Roles> getRoles() {
        return roles;
    }

    public void setRoles(List<Roles> roles) {
        this.roles = roles;
    }

    public Roles getSelectedRoles() {
        if (selectedRoles == null) {
            selectedRoles = new Roles();
        }
        return selectedRoles;
    }

    public void setSelectedRoles(Roles selectedRoles) {
        this.selectedRoles = selectedRoles;
    }

    public List<Modulo> getModulos() {
        return modulos;
    }

    public void setModulos(List<Modulo> modulos) {
        this.modulos = modulos;
    }
}
